package cn.zn.modules.zzsys.inter;

import cn.zn.framework.common.utils.PageTUtils;
import cn.zn.modules.zzsys.inter.dto.UserRegisterDTO;
import cn.zn.modules.zzsys.inter.vo.SysUserVO;

import java.util.List;

public interface UserInter {
    /**
     * 某角色的用户
     *
     * @param roleId     角色ID
     * @param unUserCode 不查询的用户编号
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageTUtils<SysUserVO> queryPageByRole(Long roleId, List<String> unUserCode, long pageNo, long pageSize);

    /**
     * 根据用户编码查询
     *
     * @param userCodes
     * @return
     */
    List<SysUserVO> queryByUserCodes(List<String> userCodes);

    /**
     * 根据微信小程序ID查询用户
     *
     * @param wappId
     * @return
     */
    SysUserVO queryByWappId(Long wappId);

    /**
     * 根据登录用户ID查询
     *
     * @param loginUserId
     * @return
     */
    SysUserVO queryByLoginUserId(Long loginUserId);

    /**
     * 根据登录用户ID查询，总会返回数据
     *
     * @param loginUserId
     * @return
     */
    SysUserVO queryByLoginUserId2(Long loginUserId);

    /**
     * 查询用户列表
     *
     * @param userIds
     * @return
     */
    List<SysUserVO> queryByIds(List<Long> userIds);

    /**
     * 根据租户及角色查询用户
     *
     * @param tenantId
     * @param roleId
     * @return
     */
    List<SysUserVO> queryByTenantAndRole(Long tenantId, Long roleId);

    /**
     * 保存用户注册
     *
     * @param userRegisterDTO
     */
    void saveUserForRegister(UserRegisterDTO userRegisterDTO, Long tenantId);

    /**
     * 是否租户管理人员
     *
     * @param userId
     * @return
     */
    Boolean isAdminForTanent(Long userId, Long tenantId);
}
